//toernooiaanmaken
package model;

import componenten.Database;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Gebruiker
 */
public class Deelnemer {

    private String betaling;
    private int masterclass;
    private int lid;
    private ArrayList bericht;
    private boolean gevalideerd;

    public Deelnemer() {
        this.betaling = "n";
        this.bericht = new ArrayList();
        this.gevalideerd = true;
    }

    public Deelnemer(String argIdDeelnemer, String argIdMasterclass) {

        String sql = "SELECT * from deelnemer WHERE masterclass_id = " + argIdMasterclass + " AND lid_id = " + argIdDeelnemer;
        System.out.print(sql);

        try {

            ResultSet result = Database.executeSelectQuery(sql);
            result.next();
            this.masterclass = result.getInt("masterclass_id");
            this.lid = result.getInt("lid_id");
            this.betaling = result.getString("deelnemer_betaalstatus");

        } catch (SQLException e) {
            System.out.print(e);
        }

        this.bericht = new ArrayList();
        this.gevalideerd = true;
    }

    private void valideren() {

        if (!"j".equals(this.betaling) || !"n".equals(this.betaling)) {
            this.getBericht().add("betaling mag allen j of n bevatten");
            this.setGevalideerd(false);
        }

    }

    public boolean toevoegen() {
        this.valideren();
        if (this.isGevalideerd()) {

            String sqlQuery = "Insert into deelnemer( masterclass_id, lid_id , deelnemer_betaalstatus) values('"
                    + this.masterclass + "','"
                    + this.lid + "','"
                    + this.betaling
                    + "')";

            if (Database.executeInsertQuery(sqlQuery) != 1) {
                this.setGevalideerd(false);
                this.getBericht().add("Er is een fout onstaan tijdens het opslaan probeer opnieuw (persoon)");

            }

        }
        return this.isGevalideerd();
    }

    public boolean bijwerken() {
        this.valideren();
        if (this.isGevalideerd()) {
            String sqlQuery = "UPDATE fullhouse.deelnemer SET "
                    + "deelnemer_betaalstatus = '" + this.betaling + "'"
                    + "WHERE lid_id = " + this.lid + " "
                    + "AND masterclass_id = " + this.masterclass;

            if (Database.executeInsertQuery(sqlQuery) != 1) {
                this.setGevalideerd(false);
                this.getBericht().add("Er is een fout onstaan tijdens het bijwerken probeer opnieuw (persoon)");

            }
        }
        return this.isGevalideerd();
    }

    public int getLaatsteId() {

        String query = "SELECT LAST_INSERT_ID()";
        ResultSet result = Database.executeSelectQuery(query);
        int laatsteid = 0;

        try {
            if (result.next()) {
                laatsteid = result.getInt("LAST_INSERT_ID()");
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage() + "\n" + e.getSQLState() + "\n" + e.getErrorCode());
            System.out.println(e.toString());
        }
        return laatsteid;
    }

    /**
     * @return the betaling
     */
    public String getBetaling() {
        return betaling;
    }

    /**
     * @param betaling the betaling to set
     */
    public void setBetaling(String betaling) {
        this.betaling = betaling;
    }

    /**
     * @return the masterclass
     */
    public int getMasterclass() {
        return masterclass;
    }

    /**
     * @param masterclass the masterclass to set
     */
    public void setMasterclass(int masterclass) {
        this.masterclass = masterclass;
    }

    /**
     * @return the lid
     */
    public int getLid() {
        return lid;
    }

    /**
     * @param lid the lid to set
     */
    public void setLid(int lid) {
        this.lid = lid;
    }

    /**
     * @return the bericht
     */
    public ArrayList getBericht() {
        return bericht;
    }

    /**
     * @param bericht the bericht to set
     */
    public void setBericht(ArrayList bericht) {
        this.bericht = bericht;
    }

    /**
     * @return the gevalideerd
     */
    public boolean isGevalideerd() {
        return gevalideerd;
    }

    /**
     * @param gevalideerd the gevalideerd to set
     */
    public void setGevalideerd(boolean gevalideerd) {
        this.gevalideerd = gevalideerd;
    }

    public String[] getInformatie() {
        Lid templid = new Lid("" + this.lid);
        return new String[]{templid.getVoornaam() + " " + templid.getAchternaam(), this.betaling, "" + this.masterclass, "" + this.lid};
    }
}